# Created with PyCharm.
# Coding UTF-8
# @Version Python 3.8

# @author GeekChunky
# @Email caiyoupeng00@outlook.com

# @Date 2021/12/04
# @CreatTime 14:56


'''
Documentation comments:

'''

# Now Write Down Your Python Code in Editor...
# Wish You Happy Everyday !

# 测试数据：
# 报废方式编号	报废方式名称	预期结果
# F1122331 测试数据 保存成功！
# 步骤1：新建csv格式的测试数据，并编写脚本读取csv中的测试数据。
# 步骤2：
# 1、从Selenium中引入WebDriver；
from time import sleep
from selenium.webdriver.common.by import By

from selenium import webdriver
# 2、引入ddt；
from ddt import ddt, unpack, data
# 3、引入unittest；
import unittest

# 4、使用Selenium模块的WebDriver打开谷歌浏览器；

driver = webdriver.Edge(r'C:\Users\caiyo\AppData\Local\Programs\Python\Python38\BroswerDriver\msedgedriver.exe')
# 5、引入步骤1中的数据读取的方法；
import csv

scrap_document = open('demo4.csv', 'r', encoding='UTF-8')
scrap_data = csv.reader(scrap_document)
# 6、在谷歌浏览器中通过get方法发送网址打开资产管理系统登录页面；
driver.get('http://192.168.1.251/bsams')
# 7、增加智能时间等待30秒；
driver.implicitly_wait(30)
# 8、查看登录页面中的用户名输入框元素，通过id属性定位用户名输入框，并输入用户名sysadmin；
driver.find_element_by_id('taskId').send_keys('719')
# 9、查看登录页面中的密码输入框元素，通过name属性定位密码输入框，并输入密码SysAdmin123；
driver.find_element_by_name('loginName').send_keys('xg01')
driver.find_element(By.CSS_SELECTOR, '#password').send_keys('xg01')
driver.find_element(By.CSS_SELECTOR, '#vericode').send_keys('shtd')
# 10、查看登录页面中的登录按钮元素，通过tag_name方法定位登录按钮，使用click()方法点击登录按钮进入资产管理系统首页；
driver.find_elements(By.TAG_NAME, 'input')[4].click()
# 11、在资产管理系统首页查看左侧报废方式按钮元素，通过link_text方法进行定位，使用click()方法点击报废方式按钮进入报废方式页面；
driver.find_element_by_link_text('报废方式').click()


# 13、通过数据驱动输入报废方式和报废方式名称；
@ddt
class test_scarp(unittest.TestCase):
    @unpack
    @data(*scrap_data)
    def test_add(self, a, b, c):
        # 12、在报废管理页面通过xpath方法点击新增按钮；
        driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/div[1]/div/input').click()
        driver.find_element_by_xpath('//*[@id="title"]').send_keys(a)
        driver.find_element_by_xpath('//*[@id="code"]').send_keys(b)
        driver.find_element(By.XPATH, '//*[@id="cboxLoadedContent"]/div/div[3]/a[2]').click()
        sleep(1)
        # 14、点击保存按钮，并通过assertEqual断言方法来验证预期结果和实际结果是否一致。
        alert = driver.switch_to_alert()
        self.assertEqual(c, alert.text)
        alert.accept()

    @classmethod
    def tearDownClass(cls):
        scrap_document.close()
        driver.find_element_by_xpath('/html/body/div[1]/div/div[3]/a').click()
        driver.quit()


if __name__ == '__main__':
    unittest.main()
